Skip to content

Conversation

@Pallavi-Janardhan
Copy link
Contributor

@Pallavi-Janardhan Pallavi-Janardhan commented Dec 29, 2025

DOC-13422

Created and added a new document for Eventing Memory Quota and linked it from the Sizing Guidelines document. Also modified the Sizing Guidelines doc.

Docs preview for Sizing Guidelines
and
Docs preview for Eventing Memory Quota

Preview credentials

@@ -0,0 +1,168 @@
= Eventing Memory Quota

:description: The Eventing Service memory quota does not enforce a hard memory limit on the Eventing subsystem, including producer and worker processes.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

including producer and worker processes

End-user / customer doesn't know what is the "producer" process.
Please go through this entire docs page and remove all mentions of "producer" processes.

Let's only keep using the term "worker processes" (or simply "workers") as the customer / end user is only aware about that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


== Overview

The Couchbase Eventing Service memory quota does not enforce a hard memory limit on the entire Eventing subsystem, including producer and worker processes.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

including producer and worker processes

Same comment as above on the use of "producer" process.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


The memory quota serves 2 primary purposes:

* **Producer-to-worker queue sizing**: controls the maximum size of each worker's input queue.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Producer-to-worker queue sizing

Same comment as above on the use of "producer" process.

Just use "Worker queue sizing"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


The per-worker quota directly influences 2 key aspects of Eventing runtime behavior.

=== Producer-to-Worker Queue Sizing

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Producer-to-Worker Queue Sizing

Same comment as above on the use of "producer" process.

Just use "Worker queue sizing"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


=== Producer-to-Worker Queue Sizing

Each worker has a bounded input queue that receives changes to documents from the Database Change Protocol (DCP) stream.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Each worker has a bounded input queue" -> "Each worker maintains a bounded input queue"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


=== Producer-to-Worker Queue Sizing

Each worker has a bounded input queue that receives changes to documents from the Database Change Protocol (DCP) stream.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Database Change Protocol (DCP) stream.

Let's not use the term "Database Change Protocol (DCP)". I don't see it mentioned anywhere in our official documentation.

Instead use a generic term like "Document Mutation stream".

Copy link
Contributor Author

@Pallavi-Janardhan Pallavi-Janardhan Dec 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do have a detailed section about DCP in our docs. So, as discussed, will provide reference links to that section, xref:server:learn:clusters-and-availability/intra-cluster-replication.adoc#database-change-protocol[DCP], from here.

Each worker has a bounded input queue that receives changes to documents from the Database Change Protocol (DCP) stream.

* The per-worker quota determines the maximum size of this queue.
* When the queue exceeds this size, Eventing throttles the DCP stream to prevent unbounded memory growth.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eventing throttles the DCP

Same as above for "DCP".

Copy link
Contributor Author

@Pallavi-Janardhan Pallavi-Janardhan Dec 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have provided a link to DCP from this section.


* GC frees memory occupied by unreachable objects that are no longer in use.
* GC reclaims memory only from objects that are no longer in use.
Memory held by live objects in the JSE heap remains allocated, so total usage may exceed the per-worker quota.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"JSE" -> "Javascript runtime" * all occurrences

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed it to JavaScript runtime

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants